From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Russ Cox" To: 9fans@cse.psu.edu Subject: Re: [9fans] union directories MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Message-Id: <20010322020303.8FEE0199C1@mail.cse.psu.edu> Date: Wed, 21 Mar 2001 21:02:58 -0500 Topicbox-Message-UUID: 7256f9f2-eac9-11e9-9e20-41e7f4b1d025 Actually that's the way it's supposed to work. Say you have two directories free_space and non_writable. If you write: bind -bc free_space non_writable You add space to non_writable. Everything works fine. free_space is before non_writable in non_writable. If you create a file in non_writable you are actually creating int in free_space. The union looks like * free_space non_writable where the * means the directory was bound with -c. Creates go to the topmost starred directory. bind -ac non_writable2 free_space2 non_writable2 is after free_space2 in free_space2. You should be able to write in free_space. *you can't*. Even stranger: Now you have free_space2 * non_writable2 Creates go to non_writable2, but the directory isn't writable. bind -ac fspace1 fspace2 Any file in fspace2 supersedes any file in fspace1 with the same name, but if you create a file in fspace2 it is actually created *in fspace1*!!!???. fspace1 is *after* fspace2 for already existing files, but it is *before* when you create new ones. Now you have fspace2 * fspace1 Creates go to fspace1 but fspace2 wins for lookups. It's just the way it's defined. Note that if you did bind -c fspace2 fspace2 bind -ac fspace1 fspace2 you'd have * fspace2 * fspace1 so creates would go to fspace2 (the fact that fspace1 is starred is ignored), and fspace2 would win for lookups. Russ