diff options
author | Jonathan Corbet <corbet@lwn.net> | 2009-02-06 15:52:43 -0500 |
---|---|---|
committer | Jonathan Corbet <corbet@lwn.net> | 2009-03-16 10:32:27 -0400 |
commit | 684999149002dd046269666a390458e0acb38280 (patch) | |
tree | b12ea4a953ba2bd90428092e7f35a222a4109510 /fs/eventpoll.c | |
parent | 041b62374c7fedc11a8a1eeda2868612d3d1436c (diff) |
Rename struct file->f_ep_lock
This lock moves out of the CONFIG_EPOLL ifdef and becomes f_lock. For now,
epoll remains the only user, but a future patch will use it to protect
f_flags as well.
Cc: Davide Libenzi <davidel@xmailserver.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'fs/eventpoll.c')
-rw-r--r-- | fs/eventpoll.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/eventpoll.c b/fs/eventpoll.c index 011b9b8c90c6..c5c424f23fd5 100644 --- a/fs/eventpoll.c +++ b/fs/eventpoll.c | |||
@@ -417,10 +417,10 @@ static int ep_remove(struct eventpoll *ep, struct epitem *epi) | |||
417 | ep_unregister_pollwait(ep, epi); | 417 | ep_unregister_pollwait(ep, epi); |
418 | 418 | ||
419 | /* Remove the current item from the list of epoll hooks */ | 419 | /* Remove the current item from the list of epoll hooks */ |
420 | spin_lock(&file->f_ep_lock); | 420 | spin_lock(&file->f_lock); |
421 | if (ep_is_linked(&epi->fllink)) | 421 | if (ep_is_linked(&epi->fllink)) |
422 | list_del_init(&epi->fllink); | 422 | list_del_init(&epi->fllink); |
423 | spin_unlock(&file->f_ep_lock); | 423 | spin_unlock(&file->f_lock); |
424 | 424 | ||
425 | rb_erase(&epi->rbn, &ep->rbr); | 425 | rb_erase(&epi->rbn, &ep->rbr); |
426 | 426 | ||
@@ -538,7 +538,7 @@ void eventpoll_release_file(struct file *file) | |||
538 | struct epitem *epi; | 538 | struct epitem *epi; |
539 | 539 | ||
540 | /* | 540 | /* |
541 | * We don't want to get "file->f_ep_lock" because it is not | 541 | * We don't want to get "file->f_lock" because it is not |
542 | * necessary. It is not necessary because we're in the "struct file" | 542 | * necessary. It is not necessary because we're in the "struct file" |
543 | * cleanup path, and this means that noone is using this file anymore. | 543 | * cleanup path, and this means that noone is using this file anymore. |
544 | * So, for example, epoll_ctl() cannot hit here sicne if we reach this | 544 | * So, for example, epoll_ctl() cannot hit here sicne if we reach this |
@@ -547,6 +547,8 @@ void eventpoll_release_file(struct file *file) | |||
547 | * will correctly serialize the operation. We do need to acquire | 547 | * will correctly serialize the operation. We do need to acquire |
548 | * "ep->mtx" after "epmutex" because ep_remove() requires it when called | 548 | * "ep->mtx" after "epmutex" because ep_remove() requires it when called |
549 | * from anywhere but ep_free(). | 549 | * from anywhere but ep_free(). |
550 | * | ||
551 | * Besides, ep_remove() acquires the lock, so we can't hold it here. | ||
550 | */ | 552 | */ |
551 | mutex_lock(&epmutex); | 553 | mutex_lock(&epmutex); |
552 | 554 | ||
@@ -785,9 +787,9 @@ static int ep_insert(struct eventpoll *ep, struct epoll_event *event, | |||
785 | goto error_unregister; | 787 | goto error_unregister; |
786 | 788 | ||
787 | /* Add the current item to the list of active epoll hook for this file */ | 789 | /* Add the current item to the list of active epoll hook for this file */ |
788 | spin_lock(&tfile->f_ep_lock); | 790 | spin_lock(&tfile->f_lock); |
789 | list_add_tail(&epi->fllink, &tfile->f_ep_links); | 791 | list_add_tail(&epi->fllink, &tfile->f_ep_links); |
790 | spin_unlock(&tfile->f_ep_lock); | 792 | spin_unlock(&tfile->f_lock); |
791 | 793 | ||
792 | /* | 794 | /* |
793 | * Add the current item to the RB tree. All RB tree operations are | 795 | * Add the current item to the RB tree. All RB tree operations are |