mirror of https://gitee.com/openkylin/linux.git
lustre: switch to kernel_write
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
05a4a33b6d
commit
8257723993
|
@ -731,8 +731,7 @@ int cfs_tracefile_dump_all_pages(char *filename)
|
||||||
__LASSERT_TAGE_INVARIANT(tage);
|
__LASSERT_TAGE_INVARIANT(tage);
|
||||||
|
|
||||||
buf = kmap(tage->page);
|
buf = kmap(tage->page);
|
||||||
rc = vfs_write(filp, (__force const char __user *)buf,
|
rc = kernel_write(filp, buf, tage->used, &filp->f_pos);
|
||||||
tage->used, &filp->f_pos);
|
|
||||||
kunmap(tage->page);
|
kunmap(tage->page);
|
||||||
|
|
||||||
if (rc != (int)tage->used) {
|
if (rc != (int)tage->used) {
|
||||||
|
@ -976,7 +975,6 @@ static int tracefiled(void *arg)
|
||||||
struct tracefiled_ctl *tctl = arg;
|
struct tracefiled_ctl *tctl = arg;
|
||||||
struct cfs_trace_page *tage;
|
struct cfs_trace_page *tage;
|
||||||
struct cfs_trace_page *tmp;
|
struct cfs_trace_page *tmp;
|
||||||
mm_segment_t __oldfs;
|
|
||||||
struct file *filp;
|
struct file *filp;
|
||||||
char *buf;
|
char *buf;
|
||||||
int last_loop = 0;
|
int last_loop = 0;
|
||||||
|
@ -1014,8 +1012,6 @@ static int tracefiled(void *arg)
|
||||||
__LASSERT(list_empty(&pc.pc_pages));
|
__LASSERT(list_empty(&pc.pc_pages));
|
||||||
goto end_loop;
|
goto end_loop;
|
||||||
}
|
}
|
||||||
__oldfs = get_fs();
|
|
||||||
set_fs(get_ds());
|
|
||||||
|
|
||||||
list_for_each_entry_safe(tage, tmp, &pc.pc_pages, linkage) {
|
list_for_each_entry_safe(tage, tmp, &pc.pc_pages, linkage) {
|
||||||
static loff_t f_pos;
|
static loff_t f_pos;
|
||||||
|
@ -1028,8 +1024,7 @@ static int tracefiled(void *arg)
|
||||||
f_pos = i_size_read(file_inode(filp));
|
f_pos = i_size_read(file_inode(filp));
|
||||||
|
|
||||||
buf = kmap(tage->page);
|
buf = kmap(tage->page);
|
||||||
rc = vfs_write(filp, (__force const char __user *)buf,
|
rc = kernel_write(filp, buf, tage->used, &f_pos);
|
||||||
tage->used, &f_pos);
|
|
||||||
kunmap(tage->page);
|
kunmap(tage->page);
|
||||||
|
|
||||||
if (rc != (int)tage->used) {
|
if (rc != (int)tage->used) {
|
||||||
|
@ -1040,7 +1035,6 @@ static int tracefiled(void *arg)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
set_fs(__oldfs);
|
|
||||||
|
|
||||||
filp_close(filp, NULL);
|
filp_close(filp, NULL);
|
||||||
put_pages_on_daemon_list(&pc);
|
put_pages_on_daemon_list(&pc);
|
||||||
|
|
|
@ -52,7 +52,6 @@ int libcfs_kkuc_msg_put(struct file *filp, void *payload)
|
||||||
struct kuc_hdr *kuch = (struct kuc_hdr *)payload;
|
struct kuc_hdr *kuch = (struct kuc_hdr *)payload;
|
||||||
ssize_t count = kuch->kuc_msglen;
|
ssize_t count = kuch->kuc_msglen;
|
||||||
loff_t offset = 0;
|
loff_t offset = 0;
|
||||||
mm_segment_t fs;
|
|
||||||
int rc = -ENXIO;
|
int rc = -ENXIO;
|
||||||
|
|
||||||
if (IS_ERR_OR_NULL(filp))
|
if (IS_ERR_OR_NULL(filp))
|
||||||
|
@ -63,18 +62,14 @@ int libcfs_kkuc_msg_put(struct file *filp, void *payload)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs = get_fs();
|
|
||||||
set_fs(KERNEL_DS);
|
|
||||||
while (count > 0) {
|
while (count > 0) {
|
||||||
rc = vfs_write(filp, (void __force __user *)payload,
|
rc = kernel_write(filp, payload, count, &offset);
|
||||||
count, &offset);
|
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
break;
|
break;
|
||||||
count -= rc;
|
count -= rc;
|
||||||
payload += rc;
|
payload += rc;
|
||||||
rc = 0;
|
rc = 0;
|
||||||
}
|
}
|
||||||
set_fs(fs);
|
|
||||||
|
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
CWARN("message send failed (%d)\n", rc);
|
CWARN("message send failed (%d)\n", rc);
|
||||||
|
|
Loading…
Reference in New Issue