From: Peng Tao Date: Thu, 21 Nov 2013 14:28:25 +0000 (+0800) Subject: staging/lustre/libcfs: remove filp_write X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=7ebcb731fc078085e3f11c41526840eccbceff44;p=deliverable%2Flinux.git staging/lustre/libcfs: remove filp_write Use vfs_write instead and call kmap/kunmap to ensure that we can access high memory zone. Cc: Andreas Dilger Signed-off-by: Peng Tao Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/lustre/include/linux/libcfs/linux/linux-fs.h b/drivers/staging/lustre/include/linux/libcfs/linux/linux-fs.h index 573ab0895791..102afa217f85 100644 --- a/drivers/staging/lustre/include/linux/libcfs/linux/linux-fs.h +++ b/drivers/staging/lustre/include/linux/libcfs/linux/linux-fs.h @@ -52,9 +52,6 @@ #include #include -#define filp_write(fp, buf, size, pos) \ - ((fp)->f_op->write((fp), (buf), (size), pos)) - #define flock_type(fl) ((fl)->fl_type) #define flock_set_type(fl, type) do { (fl)->fl_type = (type); } while (0) #define flock_pid(fl) ((fl)->fl_pid) diff --git a/drivers/staging/lustre/lustre/libcfs/tracefile.c b/drivers/staging/lustre/lustre/libcfs/tracefile.c index 4c3dad6fcf49..54290ce6bb43 100644 --- a/drivers/staging/lustre/lustre/libcfs/tracefile.c +++ b/drivers/staging/lustre/lustre/libcfs/tracefile.c @@ -678,6 +678,7 @@ int cfs_tracefile_dump_all_pages(char *filename) struct file *filp; struct cfs_trace_page *tage; struct cfs_trace_page *tmp; + char *buf; int rc; DECL_MMSPACE; @@ -708,8 +709,11 @@ int cfs_tracefile_dump_all_pages(char *filename) __LASSERT_TAGE_INVARIANT(tage); - rc = filp_write(filp, page_address(tage->page), - tage->used, &filp->f_pos); + buf = kmap(tage->page); + rc = vfs_write(filp, (__force const char __user *)buf, + tage->used, &filp->f_pos); + kunmap(tage->page); + if (rc != (int)tage->used) { printk(KERN_WARNING "wanted to write %u but wrote " "%d\n", tage->used, rc); @@ -971,6 +975,7 @@ static int tracefiled(void *arg) struct cfs_trace_page *tage; struct cfs_trace_page *tmp; struct file *filp; + char *buf; int last_loop = 0; int rc; @@ -1023,8 +1028,11 @@ static int tracefiled(void *arg) else if (f_pos > i_size_read(filp->f_dentry->d_inode)) f_pos = i_size_read(filp->f_dentry->d_inode); - rc = filp_write(filp, page_address(tage->page), - tage->used, &f_pos); + buf = kmap(tage->page); + rc = vfs_write(filp, (__force const char __user *)buf, + tage->used, &f_pos); + kunmap(tage->page); + if (rc != (int)tage->used) { printk(KERN_WARNING "wanted to write %u " "but wrote %d\n", tage->used, rc);