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

Commit 5edc22cc authored by Marc Dionne's avatar Marc Dionne Committed by David Howells
Browse files

afs: Set correct lock type for the yfs CreateFile



A lock type of 0 is "LockRead", which makes the fileserver record an
unintentional read lock on the new file.  This will cause problems
later on if the file is the subject of locking operations.

The correct default value should be -1 ("LockNone").

Fix the operation marshalling code to set the value and provide an enum to
symbolise the values whilst we're at it.

Fixes: 30062bd1 ("afs: Implement YFS support in the fs client")
Signed-off-by: default avatarMarc Dionne <marc.dionne@auristor.com>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent c2b8bd49
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -161,3 +161,14 @@ struct yfs_xdr_YFSStoreVolumeStatus {
	struct yfs_xdr_u64	max_quota;
	struct yfs_xdr_u64	file_quota;
} __packed;

enum yfs_lock_type {
	yfs_LockNone		= -1,
	yfs_LockRead		= 0,
	yfs_LockWrite		= 1,
	yfs_LockExtend		= 2,
	yfs_LockRelease		= 3,
	yfs_LockMandatoryRead	= 0x100,
	yfs_LockMandatoryWrite	= 0x101,
	yfs_LockMandatoryExtend	= 0x102,
};
+1 −1
Original line number Diff line number Diff line
@@ -803,7 +803,7 @@ int yfs_fs_create_file(struct afs_fs_cursor *fc,
	bp = xdr_encode_YFSFid(bp, &vnode->fid);
	bp = xdr_encode_string(bp, name, namesz);
	bp = xdr_encode_YFSStoreStatus_mode(bp, mode);
	bp = xdr_encode_u32(bp, 0); /* ViceLockType */
	bp = xdr_encode_u32(bp, yfs_LockNone); /* ViceLockType */
	yfs_check_req(call, bp);

	afs_use_fs_server(call, fc->cbi);