Skip to content

Commit

Permalink
aio: kill ki_key
Browse files Browse the repository at this point in the history
ki_key wasn't actually used for anything previously - it was always 0.
Drop it to trim struct kiocb a bit.

Signed-off-by: Kent Overstreet <[email protected]>
Cc: Zach Brown <[email protected]>
Cc: Felipe Balbi <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Mark Fasheh <[email protected]>
Cc: Joel Becker <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: Asai Thambi S P <[email protected]>
Cc: Selvan Mani <[email protected]>
Cc: Sam Bradshaw <[email protected]>
Cc: Jeff Moyer <[email protected]>
Cc: Al Viro <[email protected]>
Cc: Benjamin LaHaise <[email protected]>
Reviewed-by: "Theodore Ts'o" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Kent Overstreet authored and torvalds committed May 8, 2013
1 parent 4e23bca commit 8a66089
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 7 deletions.
7 changes: 5 additions & 2 deletions fs/aio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1159,7 +1159,7 @@ static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,
}
}

ret = put_user(req->ki_key, &user_iocb->aio_key);
ret = put_user(KIOCB_KEY, &user_iocb->aio_key);
if (unlikely(ret)) {
pr_debug("EFAULT: aio_key\n");
goto out_put_req;
Expand Down Expand Up @@ -1281,10 +1281,13 @@ static struct kiocb *lookup_kiocb(struct kioctx *ctx, struct iocb __user *iocb,

assert_spin_locked(&ctx->ctx_lock);

if (key != KIOCB_KEY)
return NULL;

/* TODO: use a hash or array, this sucks. */
list_for_each(pos, &ctx->active_reqs) {
struct kiocb *kiocb = list_kiocb(pos);
if (kiocb->ki_obj.user == iocb && kiocb->ki_key == key)
if (kiocb->ki_obj.user == iocb)
return kiocb;
}
return NULL;
Expand Down
9 changes: 4 additions & 5 deletions include/linux/aio.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
struct kioctx;
struct kiocb;

#define KIOCB_SYNC_KEY (~0U)
#define KIOCB_KEY 0

/*
* We use ki_cancel == KIOCB_CANCELLED to indicate that a kiocb has been either
Expand Down Expand Up @@ -56,10 +56,9 @@ typedef int (kiocb_cancel_fn)(struct kiocb *, struct io_event *);
*/
struct kiocb {
atomic_t ki_users;
unsigned ki_key; /* id of this request */

struct file *ki_filp;
struct kioctx *ki_ctx; /* may be NULL for sync ops */
struct kioctx *ki_ctx; /* NULL for sync ops */
kiocb_cancel_fn *ki_cancel;
ssize_t (*ki_retry)(struct kiocb *);
void (*ki_dtor)(struct kiocb *);
Expand Down Expand Up @@ -95,14 +94,14 @@ struct kiocb {

static inline bool is_sync_kiocb(struct kiocb *kiocb)
{
return kiocb->ki_key == KIOCB_SYNC_KEY;
return kiocb->ki_ctx == NULL;
}

static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
{
*kiocb = (struct kiocb) {
.ki_users = ATOMIC_INIT(1),
.ki_key = KIOCB_SYNC_KEY,
.ki_ctx = NULL,
.ki_filp = filp,
.ki_obj.tsk = current,
};
Expand Down

0 comments on commit 8a66089

Please sign in to comment.