Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 9919
b: refs/heads/master
c: 4faa528
h: refs/heads/master
i:
  9917: 5f4ece2
  9915: 2cc741f
  9911: 87db502
  9903: 27dd995
  9887: 5dfa2c0
  9855: 14e2bbf
v: v3
  • Loading branch information
Zach Brown authored and Linus Torvalds committed Oct 18, 2005
1 parent a2f7ab1 commit f02f237
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 27 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e7507ed91e093b9e4e218e41ebfdce05458258fc
refs/heads/master: 4faa5285283fad081443e3612ca426a311bb6c7e
26 changes: 1 addition & 25 deletions trunk/fs/aio.c
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ static struct kiocb fastcall *__aio_get_req(struct kioctx *ctx)
if (unlikely(!req))
return NULL;

req->ki_flags = 1 << KIF_LOCKED;
req->ki_flags = 0;
req->ki_users = 2;
req->ki_key = 0;
req->ki_ctx = ctx;
Expand Down Expand Up @@ -547,25 +547,6 @@ struct kioctx *lookup_ioctx(unsigned long ctx_id)
return ioctx;
}

static int lock_kiocb_action(void *param)
{
schedule();
return 0;
}

static inline void lock_kiocb(struct kiocb *iocb)
{
wait_on_bit_lock(&iocb->ki_flags, KIF_LOCKED, lock_kiocb_action,
TASK_UNINTERRUPTIBLE);
}

static inline void unlock_kiocb(struct kiocb *iocb)
{
kiocbClearLocked(iocb);
smp_mb__after_clear_bit();
wake_up_bit(&iocb->ki_flags, KIF_LOCKED);
}

/*
* use_mm
* Makes the calling kernel thread take on the specified
Expand Down Expand Up @@ -796,9 +777,7 @@ static int __aio_run_iocbs(struct kioctx *ctx)
* Hold an extra reference while retrying i/o.
*/
iocb->ki_users++; /* grab extra reference */
lock_kiocb(iocb);
aio_run_iocb(iocb);
unlock_kiocb(iocb);
if (__aio_put_req(ctx, iocb)) /* drop extra ref */
put_ioctx(ctx);
}
Expand Down Expand Up @@ -1542,7 +1521,6 @@ int fastcall io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb,

spin_lock_irq(&ctx->ctx_lock);
aio_run_iocb(req);
unlock_kiocb(req);
if (!list_empty(&ctx->run_list)) {
/* drain the run list */
while (__aio_run_iocbs(ctx))
Expand Down Expand Up @@ -1674,7 +1652,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
if (NULL != cancel) {
struct io_event tmp;
pr_debug("calling cancel\n");
lock_kiocb(kiocb);
memset(&tmp, 0, sizeof(tmp));
tmp.obj = (u64)(unsigned long)kiocb->ki_obj.user;
tmp.data = kiocb->ki_user_data;
Expand All @@ -1686,7 +1663,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
if (copy_to_user(result, &tmp, sizeof(tmp)))
ret = -EFAULT;
}
unlock_kiocb(kiocb);
} else
ret = -EINVAL;

Expand Down
7 changes: 6 additions & 1 deletion trunk/include/linux/aio.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ struct kioctx;
#define KIOCB_SYNC_KEY (~0U)

/* ki_flags bits */
#define KIF_LOCKED 0
/*
* This may be used for cancel/retry serialization in the future, but
* for now it's unused and we probably don't want modules to even
* think they can use it.
*/
/* #define KIF_LOCKED 0 */
#define KIF_KICKED 1
#define KIF_CANCELLED 2

Expand Down

0 comments on commit f02f237

Please sign in to comment.