Skip to content

Commit 1752f0a

Browse files
isilenceaxboe
authored andcommitted
fs: optimise kiocb_set_rw_flags()
Use a local var to collect flags in kiocb_set_rw_flags(). That spares some memory writes and allows to replace most of the jumps with MOVEcc. Signed-off-by: Pavel Begunkov <[email protected]> Reviewed-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent d1719f7 commit 1752f0a

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

include/linux/fs.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3446,22 +3446,28 @@ static inline int iocb_flags(struct file *file)
34463446

34473447
static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
34483448
{
3449+
int kiocb_flags = 0;
3450+
3451+
if (!flags)
3452+
return 0;
34493453
if (unlikely(flags & ~RWF_SUPPORTED))
34503454
return -EOPNOTSUPP;
34513455

34523456
if (flags & RWF_NOWAIT) {
34533457
if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
34543458
return -EOPNOTSUPP;
3455-
ki->ki_flags |= IOCB_NOWAIT;
3459+
kiocb_flags |= IOCB_NOWAIT;
34563460
}
34573461
if (flags & RWF_HIPRI)
3458-
ki->ki_flags |= IOCB_HIPRI;
3462+
kiocb_flags |= IOCB_HIPRI;
34593463
if (flags & RWF_DSYNC)
3460-
ki->ki_flags |= IOCB_DSYNC;
3464+
kiocb_flags |= IOCB_DSYNC;
34613465
if (flags & RWF_SYNC)
3462-
ki->ki_flags |= (IOCB_DSYNC | IOCB_SYNC);
3466+
kiocb_flags |= (IOCB_DSYNC | IOCB_SYNC);
34633467
if (flags & RWF_APPEND)
3464-
ki->ki_flags |= IOCB_APPEND;
3468+
kiocb_flags |= IOCB_APPEND;
3469+
3470+
ki->ki_flags |= kiocb_flags;
34653471
return 0;
34663472
}
34673473

0 commit comments

Comments
 (0)