mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Merge branch 'work.copy_file_range' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs copy_file_range updates from Al Viro: "Several series around copy_file_range/CLONE" * 'work.copy_file_range' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: btrfs: use new dedupe data function pointer vfs: hoist the btrfs deduplication ioctl to the vfs vfs: wire up compat ioctl for CLONE/CLONE_RANGE cifs: avoid unused variable and label nfsd: implement the NFSv4.2 CLONE operation nfsd: Pass filehandle to nfs4_preprocess_stateid_op() vfs: pull btrfs clone API to vfs layer locks: new locks_mandatory_area calling convention vfs: Add vfs_copy_file_range() support for pagecache copies btrfs: add .copy_file_range file operation x86: add sys_copy_file_range to syscall tables vfs: add copy_file_range syscall and vfs helper
This commit is contained in:
commit
fce205e9da
26 changed files with 734 additions and 344 deletions
22
fs/locks.c
22
fs/locks.c
|
@ -1258,20 +1258,16 @@ int locks_mandatory_locked(struct file *file)
|
|||
|
||||
/**
|
||||
* locks_mandatory_area - Check for a conflicting lock
|
||||
* @read_write: %FLOCK_VERIFY_WRITE for exclusive access, %FLOCK_VERIFY_READ
|
||||
* for shared
|
||||
* @inode: the file to check
|
||||
* @inode: the file to check
|
||||
* @filp: how the file was opened (if it was)
|
||||
* @offset: start of area to check
|
||||
* @count: length of area to check
|
||||
* @start: first byte in the file to check
|
||||
* @end: lastbyte in the file to check
|
||||
* @type: %F_WRLCK for a write lock, else %F_RDLCK
|
||||
*
|
||||
* Searches the inode's list of locks to find any POSIX locks which conflict.
|
||||
* This function is called from rw_verify_area() and
|
||||
* locks_verify_truncate().
|
||||
*/
|
||||
int locks_mandatory_area(int read_write, struct inode *inode,
|
||||
struct file *filp, loff_t offset,
|
||||
size_t count)
|
||||
int locks_mandatory_area(struct inode *inode, struct file *filp, loff_t start,
|
||||
loff_t end, unsigned char type)
|
||||
{
|
||||
struct file_lock fl;
|
||||
int error;
|
||||
|
@ -1283,9 +1279,9 @@ int locks_mandatory_area(int read_write, struct inode *inode,
|
|||
fl.fl_flags = FL_POSIX | FL_ACCESS;
|
||||
if (filp && !(filp->f_flags & O_NONBLOCK))
|
||||
sleep = true;
|
||||
fl.fl_type = (read_write == FLOCK_VERIFY_WRITE) ? F_WRLCK : F_RDLCK;
|
||||
fl.fl_start = offset;
|
||||
fl.fl_end = offset + count - 1;
|
||||
fl.fl_type = type;
|
||||
fl.fl_start = start;
|
||||
fl.fl_end = end;
|
||||
|
||||
for (;;) {
|
||||
if (filp) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue