Commit 38b08223 authored by Christoph Hellwig's avatar Christoph Hellwig

initramfs: use vfs_utimes in do_copy

Don't bother saving away the pathname and just use the new struct path
based utimes helper instead.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent fd5ad30c
...@@ -202,7 +202,6 @@ static inline void __init eat(unsigned n) ...@@ -202,7 +202,6 @@ static inline void __init eat(unsigned n)
byte_count -= n; byte_count -= n;
} }
static __initdata char *vcollected;
static __initdata char *collected; static __initdata char *collected;
static long remains __initdata; static long remains __initdata;
static __initdata char *collect; static __initdata char *collect;
...@@ -345,7 +344,6 @@ static int __init do_name(void) ...@@ -345,7 +344,6 @@ static int __init do_name(void)
vfs_fchmod(wfile, mode); vfs_fchmod(wfile, mode);
if (body_len) if (body_len)
vfs_truncate(&wfile->f_path, body_len); vfs_truncate(&wfile->f_path, body_len);
vcollected = kstrdup(collected, GFP_KERNEL);
state = CopyFile; state = CopyFile;
} }
} else if (S_ISDIR(mode)) { } else if (S_ISDIR(mode)) {
...@@ -368,11 +366,15 @@ static int __init do_name(void) ...@@ -368,11 +366,15 @@ static int __init do_name(void)
static int __init do_copy(void) static int __init do_copy(void)
{ {
if (byte_count >= body_len) { if (byte_count >= body_len) {
struct timespec64 t[2] = { };
if (xwrite(wfile, victim, body_len, &wfile_pos) != body_len) if (xwrite(wfile, victim, body_len, &wfile_pos) != body_len)
error("write error"); error("write error");
t[0].tv_sec = mtime;
t[1].tv_sec = mtime;
vfs_utimes(&wfile->f_path, t);
fput(wfile); fput(wfile);
do_utime(vcollected, mtime);
kfree(vcollected);
eat(body_len); eat(body_len);
state = SkipIt; state = SkipIt;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment