Kern Sibbald wrote:
> On Wednesday 13 December 2006 16:07, Attila Fülöp wrote:
>> Folks,
>>
>> just to dropping  into this discussion.
>>
>> Kern Sibbald wrote:
>>> On Wednesday 13 December 2006 08:49, Oliver Lehmann wrote:
>>> a> Kern Sibbald writes: 
>>>>>> patch-src-findlib-attribs.c
>>>>>>   when restoring a symlink, use lchflags to restore the file flags
>>>>>>   defined for the symlink ("new feature")
>> This is right, but only part of a bigger problem. FreeBSD, as opposed to
>> other OSes allows symlinks to have own permissions ACL etc and offers
>> appropriate syscalls. Specifically this are lchmod, lutimes, lchflags
>> acs_set/get_link_np.
>>
>> I have written a patch witch addresses this issue. So this patch will
>> interfere with my changes. I would prefer not to have above mentioned
>> "new feature" in the CVS since this will surely give me conflicts on
>> next "cvs update".
>>
>> I'm in the process of writing the regression scripts for my patches.
>> Since my patch addresses other stuff (mostly ACL code, and some minor
>> fixes) and the writing of regression scripts isn't that well documented
>> this may take some time. Nonetheless I hope to have the testing done
>> until next Monday.
>>
>> I will look into the other new patches this evening to see if they
>> interfere with my changes and report back tomorrow.
> 
> I would be very happy if you will provide a patch.  However, there is almost 
> zero chance that it will go in before 1.40.0 is released.  The only fixes 
> that I am accepting at the moment are important bug fixes that do not disrupt 
> the code too much.

Yes, I know. We already talked about this.

> I suggest you simply pull down the new file after I have 
> integrated the patch and adjust your code to work with it.  This is, 
> unfortunately, something that developers must do quite often.

Well that is actually what I was trying to avoid, but such is life ;-).

> Concerning all these differences on FreeBSD:  if the changes needed to make 
> things work correctly on FreeBSD are extensive and require a bit of 
> #ifdefing, we are going to have to re-think how we do it.  The code is 
> already a bit messy and adding more non-standard system dependent code will 
> push it over my tolerance of messyness.  As a consequence, we will need to 
> look at ways of making it cleaner --- e.g. moving some of the code, possibly 
> the system dependent code into subroutines ...

No, I don't think they are extensive. Just a couple of lines, mainly
ifdefing chmod/chflags/utime to the 'l' versions.

Sorry I don't have access to the current code right now, since it
is at home. I will send you a 'preliminary patch' tomorrow, so You
can peek at it and decide if it is too messy.

>> Attila
>>
>>>>>>   when restoring a hardlink, don't call chmod, chown, utime because it 
> is
>>>>>>   a hardlink and don't  have such attributes (as far as I know, if 
>>> someone
>>>>>>   with more FS-foo can step up and confirm this?). Changing this
>>>>>>   attributes will change the sourcefiles attributes which is probably 
> not
>>>>>>   what is wanted here anyway....
>>>>> I'll have to think about this a bit more.  However, I don't think it is 
>>>>> correct to skip setting the attributes.  To understand hardlinks, the 
>>> first 
>>>>> thing is to realize that the name is slightly misleading.  A hard link 
> is 
>>> not 
>>>>> really a link.  The data for the two files the attributes are one and 
> the 
>>>>> same.  The situation is very different from a softlink where there is a 
>>>>> separate directory entry that "points" to an existing file.   
>>>>>
>>>>> Thus to properly restore a hardlink you must also reset the attributes 
> or 
>>> you 
>>>>> could potentially end up with incorrect attributes (owner, modes, ...).
>>>> Ok, but from my understanding setting attributes on a hardlink changes 
> the 
>>>> attributes of the inode the hardlink is pointing to, like for "normal" 
> files 
>>>> which are technically hardlinks too. 
>>> There is no such think as a hardlink.  There is a hardlink operation.  It 
> is 
>>> very different from a softlink, and if you think about them the same way, 
> you 
>>> will never get it right.  Two files that are hardlinked (really poor 
>>> terminology) *are* one and the same file.  The two files share the same 
>>> inode, so there is no "hardlink" with separate attributes that points to 
> an 
>>> inode (as is the case for a softlink, which is a pointer).   For 
> hardlinked 
>>> files, there is only one set of data and one set of attributes.
>>>
>>>> So changing attributes for n "objects"  
>>>> pointing to the same inode is like changing the attributes n times for 
> the 
>>>> same object or is this wrong?
>>> There are n filenames that share the same data and attributes true, and if 
> you 
>>> are doing a full restore, it is possible Bacula will set those attributes 
> to 
>>> the same thing n times since each of Bacula's n representations of the 
>>> hardlinked files contains the attributes (there is only one copy of the 
> data 
>>> though).  Ideally, Bacula would set the attributes only once when it 
> restores 
>>> the data, but I would have to look at the code (which I don't have the 
> time 
>>> to do) to remember exactly what Bacula does.
>>>
>>>> If you think attributes for hardlinks have to be restored as well, the 
> fix 
>>>> for src/findlib/attribs.c has to be redone. I can do so but I still 
>>>> think.... ;)
>>> Ideally as I mentioned above, the attributes are only kept with the data 
> and 
>>> thus are only set one time.  Then when a second filename is found it would 
>>> simply be hardlinked to the first file (i.e. become one and the same) and 
> it 
>>> would not then be necessary to re-set the attributes.  If this is what 
> your 
>>> patch does, then it is probably OK.  If not, we need to re-think it.  In 
> any 
>>> case, this could be a rather fundamental change to how the low level part 
> of 
>>> Bacula works, and I am a bit worried about trying to include it in version 
>>> 1.40.0.
>>>
>>> Regards,
>>>
>>> Kern
>>>
>>> -------------------------------------------------------------------------
>>> Take Surveys. Earn Cash. Influence the Future of IT
>>> Join SourceForge.net's Techsay panel and you'll get the chance to share 
> your
>>> opinions on IT & business topics through brief surveys - and earn cash
>>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>>> _______________________________________________
>>> Bacula-devel mailing list
>>> [EMAIL PROTECTED]
>>> https://lists.sourceforge.net/lists/listinfo/bacula-devel
>>>
>>>
>>
>> -------------------------------------------------------------------------
>> Take Surveys. Earn Cash. Influence the Future of IT
>> Join SourceForge.net's Techsay panel and you'll get the chance to share your
>> opinions on IT & business topics through brief surveys - and earn cash
>> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
>> _______________________________________________
>> Bacula-devel mailing list
>> [EMAIL PROTECTED]
>> https://lists.sourceforge.net/lists/listinfo/bacula-devel
>>
> 
> 



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to