kernel NULL pointer dereference for fdatasync(directory)
fd = open("/mnt/lustre", O_RDONLY|O_NONBLOCK|O_DIRECTORY);
fdatasync(fd);
close(fd);
Signed-off-by: Dmitry Eremin <dmitry.eremin@intel.com>
Change-Id: Ib14b25d1694131e1a65373654008b7f337ce959e
Reviewed-on: http://review.whamcloud.com/5886
Tested-by: Hudson
Reviewed-by: Faccini Bruno <bruno.faccini@intel.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
*/
#ifdef HAVE_FILE_FSYNC_4ARGS
*/
#ifdef HAVE_FILE_FSYNC_4ARGS
-int ll_fsync(struct file *file, loff_t start, loff_t end, int data)
+int ll_fsync(struct file *file, loff_t start, loff_t end, int datasync)
{
struct dentry *dentry = file->f_dentry;
#elif defined(HAVE_FILE_FSYNC_2ARGS)
{
struct dentry *dentry = file->f_dentry;
#elif defined(HAVE_FILE_FSYNC_2ARGS)
-int ll_fsync(struct file *file, int data)
+int ll_fsync(struct file *file, int datasync)
{
struct dentry *dentry = file->f_dentry;
#else
{
struct dentry *dentry = file->f_dentry;
#else
-int ll_fsync(struct file *file, struct dentry *dentry, int data)
+int ll_fsync(struct file *file, struct dentry *dentry, int datasync)
{
#endif
struct inode *inode = dentry->d_inode;
{
#endif
struct inode *inode = dentry->d_inode;
if (!err)
ptlrpc_req_finished(req);
if (!err)
ptlrpc_req_finished(req);
+ if (datasync && S_ISREG(inode->i_mode)) {
struct ll_file_data *fd = LUSTRE_FPRIVATE(file);
err = cl_sync_file_range(inode, 0, OBD_OBJECT_EOF,
struct ll_file_data *fd = LUSTRE_FPRIVATE(file);
err = cl_sync_file_range(inode, 0, OBD_OBJECT_EOF,
}
run_test 118l "fsync dir ========="
}
run_test 118l "fsync dir ========="
+test_118m() # LU-3066
+{
+ [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ test_mkdir -p $DIR/$tdir
+ $MULTIOP $DIR/$tdir DY || error "fdatasync dir failed"
+ rm -rf $DIR/$tdir
+}
+run_test 118m "fdatasync dir ========="
+
[ "$SLOW" = "no" ] && [ -n "$OLD_RESENDCOUNT" ] && set_resend_count $OLD_RESENDCOUNT
test_119a() # bug 11737
[ "$SLOW" = "no" ] && [ -n "$OLD_RESENDCOUNT" ] && set_resend_count $OLD_RESENDCOUNT
test_119a() # bug 11737