public inbox for lvm2-cvs@sourceware.org help / color / mirror / Atom feed
From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/libdm libdm-common.c Date: Fri, 08 Jul 2011 15:34:00 -0000 [thread overview] Message-ID: <20110708153448.8406.qmail@sourceware.org> (raw) CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2011-07-08 15:34:47 Modified files: libdm : libdm-common.c Log message: Log cookie values when incrementing/decrementing to give clues about races. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-common.c.diff?cvsroot=lvm2&r1=1.123&r2=1.124 --- LVM2/libdm/libdm-common.c 2011/07/05 16:17:14 1.123 +++ LVM2/libdm/libdm-common.c 2011/07/08 15:34:47 1.124 @@ -1240,6 +1240,7 @@ static int _udev_notify_sem_inc(uint32_t cookie, int semid) { struct sembuf sb = {0, 1, 0}; + int val; if (semop(semid, &sb, 1) < 0) { log_error("semid %d: semop failed for cookie 0x%" PRIx32 ": %s", @@ -1247,8 +1248,15 @@ return 0; } - log_debug("Udev cookie 0x%" PRIx32 " (semid %d) incremented", - cookie, semid); + if ((val = semctl(semid, 0, GETVAL)) < 0) { + log_error("semid %d: sem_ctl GETVAL failed for " + "cookie 0x%" PRIx32 ": %s", + semid, cookie, strerror(errno)); + return 0; + } + + log_debug("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d", + cookie, semid, val); return 1; } @@ -1256,6 +1264,14 @@ static int _udev_notify_sem_dec(uint32_t cookie, int semid) { struct sembuf sb = {0, -1, IPC_NOWAIT}; + int val; + + if ((val = semctl(semid, 0, GETVAL)) < 0) { + log_error("semid %d: sem_ctl GETVAL failed for " + "cookie 0x%" PRIx32 ": %s", + semid, cookie, strerror(errno)); + return 0; + } if (semop(semid, &sb, 1) < 0) { switch (errno) { @@ -1274,8 +1290,8 @@ return 0; } - log_debug("Udev cookie 0x%" PRIx32 " (semid %d) decremented", - cookie, semid); + log_debug("Udev cookie 0x%" PRIx32 " (semid %d) decremented to %d", + cookie, semid, val - 1); return 1; } @@ -1299,6 +1315,7 @@ { int fd; int gen_semid; + int val; uint16_t base_cookie; uint32_t gen_cookie; union semun sem_arg; @@ -1359,8 +1376,15 @@ goto bad; } - log_debug("Udev cookie 0x%" PRIx32 " (semid %d) incremented", - gen_cookie, gen_semid); + if ((val = semctl(gen_semid, 0, GETVAL)) < 0) { + log_error("semid %d: sem_ctl GETVAL failed for " + "cookie 0x%" PRIx32 ": %s", + gen_semid, gen_cookie, strerror(errno)); + return 0; + } + + log_debug("Udev cookie 0x%" PRIx32 " (semid %d) incremented to %d", + gen_cookie, gen_semid, val); if (close(fd)) stack;
next reply other threads:[~2011-07-08 15:34 UTC|newest] Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-07-08 15:34 agk [this message] -- strict thread matches above, loose matches on Subject: below -- 2012-02-13 14:39 zkabelac 2012-01-25 21:47 zkabelac 2011-09-24 11:47 prajnoha 2011-07-05 16:17 agk 2011-06-28 9:24 agk 2011-03-02 8:40 zkabelac 2010-12-13 12:44 prajnoha 2010-12-13 12:30 prajnoha 2010-12-13 12:18 prajnoha 2010-11-29 10:11 zkabelac 2009-09-25 19:06 agk 2009-09-25 18:19 agk 2009-09-25 18:13 agk 2009-09-11 16:11 prajnoha 2009-09-11 15:57 prajnoha 2009-08-06 15:00 prajnoha 2009-08-05 19:50 agk 2009-08-03 18:33 agk 2009-08-03 11:01 agk 2009-07-31 16:57 agk
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20110708153448.8406.qmail@sourceware.org \ --to=agk@sourceware.org \ --cc=lvm-devel@redhat.com \ --cc=lvm2-cvs@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).