aboutsummaryrefslogtreecommitdiff
path: root/doc/devblog/day_337__who_needs_POSIX.mdwn
blob: 3ab185cc91ee595f032eff82369eafc8760673f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Got the pid locks working pretty easily, as expected.

But then... Detoured into some truely insane behavior of the Lustre
filesystem. It seems that Lustre is perfectly happy to let link()
succeed even when there's a file there that it would overwrite. Rather than
overwriting the file, Lustre picks an even more crazy way to violate
POSIX.. It lets there be 2 files in a directory with the **same name**, but
different contents. Has to be seen to be believed:

	hess$ ls pidlock
	-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
	-r--r--r--  1 hess root    70 Nov 13 15:07 pidlock
	hess$ rm pidlock; ls pidlock
	-r--r--r--  1 hess root    74 Nov 13 14:35 pidlock	

git-annex's pid locking code now detects this and seems to work
even on Lustre. Eep.

I'm clutching my "NO WARRANTY" disclaimer pretty hard though, if anyone
wants to use git-annex on Lustre. When POSIX is being violated this badly,
it's hard to anticipate what other strangeness might result.