Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6beef7eb authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs:
  9p: fix O_APPEND in legacy mode
parents 494de900 2e4bef41
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -51,4 +51,4 @@ int v9fs_dir_release(struct inode *inode, struct file *filp);
int v9fs_file_open(struct inode *inode, struct file *file);
void v9fs_inode2stat(struct inode *inode, struct p9_stat *stat);
void v9fs_dentry_release(struct dentry *);
int v9fs_uflags2omode(int uflags);
int v9fs_uflags2omode(int uflags, int extended);
+3 −1
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ int v9fs_file_open(struct inode *inode, struct file *file)

	P9_DPRINTK(P9_DEBUG_VFS, "inode: %p file: %p \n", inode, file);
	v9ses = v9fs_inode2v9ses(inode);
	omode = v9fs_uflags2omode(file->f_flags);
	omode = v9fs_uflags2omode(file->f_flags, v9fs_extended(v9ses));
	fid = file->private_data;
	if (!fid) {
		fid = v9fs_fid_clone(file->f_path.dentry);
@@ -75,6 +75,8 @@ int v9fs_file_open(struct inode *inode, struct file *file)
			inode->i_size = 0;
			inode->i_blocks = 0;
		}
		if ((file->f_flags & O_APPEND) && (!v9fs_extended(v9ses)))
			generic_file_llseek(file, 0, SEEK_END);
	}

	file->private_data = fid;
+10 −8
Original line number Diff line number Diff line
@@ -132,10 +132,10 @@ static int p9mode2unixmode(struct v9fs_session_info *v9ses, int mode)
/**
 * v9fs_uflags2omode- convert posix open flags to plan 9 mode bits
 * @uflags: flags to convert
 *
 * @extended: if .u extensions are active
 */

int v9fs_uflags2omode(int uflags)
int v9fs_uflags2omode(int uflags, int extended)
{
	int ret;

@@ -155,14 +155,16 @@ int v9fs_uflags2omode(int uflags)
		break;
	}

	if (uflags & O_EXCL)
		ret |= P9_OEXCL;

	if (uflags & O_TRUNC)
		ret |= P9_OTRUNC;

	if (extended) {
		if (uflags & O_EXCL)
			ret |= P9_OEXCL;

		if (uflags & O_APPEND)
			ret |= P9_OAPPEND;
	}

	return ret;
}
@@ -506,7 +508,7 @@ v9fs_vfs_create(struct inode *dir, struct dentry *dentry, int mode,
		flags = O_RDWR;

	fid = v9fs_create(v9ses, dir, dentry, NULL, perm,
						v9fs_uflags2omode(flags));
				v9fs_uflags2omode(flags, v9fs_extended(v9ses)));
	if (IS_ERR(fid)) {
		err = PTR_ERR(fid);
		fid = NULL;