Hi,
*IF* POSIX or general use mandates that chmod(2) should not change
ctime if no change really occurs, this should be fixed in the
Linux kernel itself.
Fixing it in user space in the chmod(1) utility is wrong, because it
could introduce user-space race conditions.
For example:
timestamp 1: perm is 0500
timestamp 2: perm is 0700
timestamp 3: perm is 0500
we would expect c_time to be timestamp 3 at the end of this flow.
Now imagine that you have two processes. Process one wants to set
perm to 0500, process 2 to 0700. Imagine it works as follows:
process 1 process 2
stats file, gets perm 500
stats files, get perm 0500
set permissions to 0700, ctime changes
set perm, no real change,
so don't do anything
WRONG! permission is 0700!
(one could argue that the overall result is undefined if the two
processes are scheduled in parallel anyway; however there seem to be
something wrong in the user-space semantic here anyway)
(in general, any "I check manually, then I set" method is wrong,
unless it is done atomically, which is not the case for user space
and can only be guaranteed with kernel locks with currently used
Linux kernels)
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]