1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-21 03:17:08 +03:00

686 Commits

Author SHA1 Message Date
Volker Lendecke
2aadb95a7e r21089: Do notifies on rename 2007-10-10 12:17:35 -05:00
Volker Lendecke
defa28f9c3 r21087: Make the param list of notify_fname match notify_trigger 2007-10-10 12:17:34 -05:00
Volker Lendecke
705f866a78 r21080: Reformatting 2007-10-10 12:17:34 -05:00
Volker Lendecke
a3c1069b0c r21079: Minimizing diff: Adopt the Samba4 style ChangeNotify flags.
Volker
2007-10-10 12:17:33 -05:00
Jeremy Allison
fe2d7cb2dc r21057: More refactoring into functions.
Jeremy.
2007-10-10 12:17:31 -05:00
Volker Lendecke
9cd6a8a827 r20931: This changes the notify infrastructure from a polling-based to an event-driven
based approach. The only remaining hook into the backend is now

	void *(*notify_add)(TALLOC_CTX *mem_ctx,
			    struct event_context *event_ctx,
			    files_struct *fsp, uint32 *filter);

(Should we put this through the VFS, so that others can more easily plug in?)

The trick here is that the backend can pick filter bits that the main smbd
should not handle anymore. Thanks to tridge for this idea.

The backend can notify the main smbd process via

void notify_fsp(files_struct *fsp, uint32 action, char *name);

The core patch is not big, what makes this more than 1800 lines are the
individual backends that are considerably changed but can be reviewed
one by one.

Based on this I'll continue with inotify now.

Volker
2007-10-10 12:17:21 -05:00
Volker Lendecke
2f1bfc5373 r20877: Random notify fixes 2007-10-10 12:17:17 -05:00
Jeremy Allison
0296358858 r20873: Some correctness fixes w.r.t. Samba4 torture BASE-DELETE.
Allow us to correctly refuse to set delete on close on a
non-empty directory. There are still some delete-on-close
wrinkles to be fixed, but I understand how to do that better
now. I'll fix this tomorrow.
Jeremy.
2007-10-10 12:17:16 -05:00
Volker Lendecke
5533cdeec1 r20854: Ok, now I think we're at a point where looking at notify starts to make sense
again :-)

Volker
2007-10-10 12:17:13 -05:00
Jeremy Allison
6133a694aa r20844: Somewhat radical change - this may break the build (I will
watch carefully - so I'm doing it in one transaction so I can
roll back).

Change check_name(), reduce_name() and dptr_create() to
return NTSTATUS. This helps a lot in error path processing
and especially in reduce_name() allows us to ditch the flaky
and error-prone saving of errno and return errors directly.

Jeremy.
2007-10-10 12:17:12 -05:00
Jeremy Allison
a36d446fb6 r20843: Get rid of last BOOL ok.
Jeremy.
2007-10-10 12:17:12 -05:00
Jeremy Allison
de0bf477da r20842: Only one more BOOL ok to go...
Jeremy.
2007-10-10 12:17:12 -05:00
Jeremy Allison
c6b6519660 r20841: Remove more BOOL ok.
Jeremy.
2007-10-10 12:17:12 -05:00
Jeremy Allison
224ff05991 r20840: Keep removing the old BOOL ok logic.
Jeremy.
2007-10-10 12:17:12 -05:00
Volker Lendecke
21b8f15dd5 r20796: Fix the same problem Jeremy has fixed (improper handling of deferred opens)
for delete_driver_files. Proper fix pending... :-)

Jeremy, please check.

Volker
2007-10-10 12:17:09 -05:00
Volker Lendecke
14c88b560e r20759: Dummy checkin to let the build farm pick up the new smbtorture4 2007-10-10 12:17:08 -05:00
Jeremy Allison
c154f43071 r20743: Remove another BOOL ok from reply_getatr.
Jeremy.
2007-10-10 12:17:08 -05:00
Jeremy Allison
3d52268095 r20742: Rename chkpth -> checkpath for sanity's sake :-).
Start removing unneeded "BOOL ok" from this reply.c
(this logic is old, old, old..... :-).
Jeremy.
2007-10-10 12:17:07 -05:00
Volker Lendecke
db93c1b98d r20740: Get rid of some if-statements 2007-10-10 12:17:07 -05:00
Jeremy Allison
89f03a8db4 r20721: Fix the search unix_convert error returns. Only open
to go...
Jeremy.
2007-10-10 12:17:06 -05:00
Jeremy Allison
c5be0082ef r20720: Fix the chkpath problem, still looking at findfirst.
Jeremy.
2007-10-10 12:17:05 -05:00
Jeremy Allison
f4474edf6a r20718: Sync up the filename path parsing changes from SAMBA_3_0_24.
The only difference between the two trees now w.r.t file
serving are the changes to smbd/open.c in this branch I need
to review.
Jeremy.
2007-10-10 12:17:04 -05:00
Jeremy Allison
06e20c2878 r20635: Add placeholder to ensure we don't go into the
wcard unlink if bad_path was set. The error
returned here is almost certainly incorrect
and will need testing properly with smbtorture,
but I don't want to forget about this path
(yes Volker I know this is currently incorrect :-).
Jeremy.
2007-10-10 12:17:00 -05:00
Volker Lendecke
f146a85e74 r20634: A *LOT* more work is necessary before touching notify remotely starts to make
sense. Until then, remove it from the tree to keep the diff between 3_0_24 and
3_0 small.

Volker
2007-10-10 12:17:00 -05:00
Volker Lendecke
58b8a242a7 r20632: The extended RAW-SAMBA3BADPATH test led me to some wrong assumptions, in
particular the NT_STATUS_INVALID_PARAMETER thing was badly wrong. Remove the
changes based on it. Using gentest is much more effective in this respect, but
it will take a while to figure out the wildcard error handling of W2k3.

Volker
2007-10-10 12:17:00 -05:00
Volker Lendecke
5e1da363bb r20628: Looks bigger than it is. This is just re-indenting the if (dirname) that we've
taken care of above.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
614651c6a7 r20627: orig_name is not needed anymore, and slightly simplify logic by doing early
returns.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
1798987128 r20619: bad_path is handled somewhere else, so can_delete does not need it anymore 2007-10-10 12:16:59 -05:00
Volker Lendecke
b1edc3d053 r20618: Fix a bug in bad_path handling that also exists in 3.0.23: For reply_unlink
under Linux we returned NT_STATUS_NOT_A_DIRECTORY. This is because in the
bad_path==True condition lstat(2) returns ENOTDIR and not ENOENT.

Not sure if we want to necessarily replicate the INVALID_PARAMETER here, but
this is what W2k3 does.

Jeremy, I tried to call you, but you were not around. So I'll leave it up to
you to merge this.

Volker
2007-10-10 12:16:59 -05:00
Volker Lendecke
c86fbdf8cc r20617: Do not notify if the delete failed 2007-10-10 12:16:59 -05:00
Volker Lendecke
794d5d38f1 r20612: A checkin I've wanted to do for ages: For bad_path==False set_bad_path_error
is equivalent to UNIX_ERROR. Expand the last reference. Lets see if I can kill
that as well :-)

Volker
2007-10-10 12:16:58 -05:00
Volker Lendecke
358673c366 r20611: All but one callers to set_bad_path_error have had the bad_path==True argument
being handled further up.

Volker
2007-10-10 12:16:58 -05:00
Volker Lendecke
cea9a01434 r20607: Next micro-step for reply_setatr 2007-10-10 12:16:58 -05:00
Volker Lendecke
c16775486b r20606: bad_path == True has been covered further up in reply_setatr.
I'm checking in micro-steps to make them independently checkable. This code
just very severely needs cleanup, but I don't want to break anything. So, be
patient with me, please :-)

Volker
2007-10-10 12:16:57 -05:00
Volker Lendecke
f19db8f33e r20605: Simplify logic in reply_setatr slightly 2007-10-10 12:16:57 -05:00
Volker Lendecke
e4a2e63272 r20597: Survive some of the notify mask tests. 2007-10-10 12:16:57 -05:00
Volker Lendecke
244f96388c r20589: Re-add lost bad_path handling, sorry. 2007-10-10 12:16:56 -05:00
Jeremy Allison
27dc5bebda r20558: Refactor rmdir_internals to use early termination rather
than lots of indented code. Change recursive_rmdir()
to return the smbd standards of True on success, False
on fail (it was doing the reverse, which was very confusing).
Jeremy.
2007-10-10 12:16:56 -05:00
Volker Lendecke
5ebdf02ba1 r20544: Change copy_file() to return NTSTATUS. This is in preparation of turning
close_file() to NTSTATUS as well.

I'm not sure I got all the error codes right, but as I've never come across a
smb_copy() call in all my Samba work, I'm leaving it at that. If I'm
absolutely bored, I will write a thorough torture test.

As far as I can see, Samba4 even does not have a libcli implementation for
it...  :-)

Volker
2007-10-10 12:16:56 -05:00
Jeremy Allison
dcc7bca1ad r20532: From Volker...
"smbcli_setattr("") always returns ACCESS_DENIED, test extension to follow.

Merge to 3.0.24?"

Yep (with slight optimization).

Jeremy.
2007-10-10 12:16:55 -05:00
Volker Lendecke
f2563ac98f r20507: smbcli_setattr("") always returns ACCESS_DENIED, test extension to follow.
Merge to 3.0.24?

Volker
2007-10-10 12:16:54 -05:00
Volker Lendecke
84e6889632 r20496: Some changes to make Samba3 the RAW-OPEN test. Checking in to both 3_0 and
3_0_24 because I was explicitly asked to, although this needs close
review. Jeremy, I'm sure you will check this thoroughly :-)

In reply_open_and_X the separate "size" variable kills the calculation of the
SPARSE flag returned to the client in the attrib field. In getpathinfo we do
it correctly, and RAW-OPEN (correctly) complains about the difference.

Add the "set the write time" to mknew and create.

For trans2open we were missing the "ofun == 0" ->
NT_STATUS_OBJECT_NAME_COLLISION case, and we dropped the status returned in
favor of ACCESS_DENIED once too many.

Last change is a fix to trans2open: We were returning the attributes given by
the client, not the attributes of the new file.

Volker
2007-10-10 12:16:53 -05:00
Volker Lendecke
471c6e6a21 r20482: Make us survive and activate RAW-CLOSE 2007-10-10 12:16:52 -05:00
Volker Lendecke
e51b764870 r20479: Both remaining calls of can_delete called it with check_is_at_open==False,
remove that parameter.

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
4f0f917b34 r20478: Make us survive & activate RAW-UNLINK 2007-10-10 12:16:51 -05:00
Volker Lendecke
d289037fdb r20470: Jeremy, another one to check:
The only error path of can_delete() that we're interested in ntcreate&x is the
one of can_delete_file_in_directory(), so call that directly.

The only other one where we might get a NT_STATUS_ACCESS_DENIED is from the
lstat in can_delete, but this is covered later in the open_directory and
open_file_ntcreate calls. open_directory does a stat() in the open case which
also covers the (potential) symlink, and open_file_ntcreate does the open(2)
itself, so this should also work.

This makes can_delete() static to reply.c.

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
2becbb9e5f r20454: Get rid of a bogus variable that was only assigned but never read.
Jeremy, please check this.

Thanks,

Volker
2007-10-10 12:16:51 -05:00
Volker Lendecke
0e953884a1 r20451: Survive the first of the filter-tests (mkdir).
Add lots of TODOs :-)

Volker
2007-10-10 12:16:50 -05:00
Volker Lendecke
ce0ad24988 r20442: Slight rewrite of the change notify infrastructure. This now survives the
first of the raw-notify subtests, the one-level test_notify_dir without any
flags around yet.

The tricky part was getting the data structures right, I hope the next tests
don't let that fall over.

fsp->notify is now by default NULL, meaning that nobody has issued a
changenotify call. This means nobody is interested in changes for this
directory.

If that has happened, notify_change_buf collects the changes if no current
request is outstanding, and it collects the requests if no change has happened
since the last request.

Happy New Year, somewhere on this planet it's already 2007 :-)

Volker

P.S: Jeremy, there's a question for you in smbd/files.c line 367.
2007-10-10 12:16:50 -05:00
Volker Lendecke
c813f71d00 r20433: Work in progress: Survive more of RAW-NOTIFY.
call_nt_transact_notify_change() is now sync if there are changes around.

A notify_message does a direct reply from within the message, so
process_pending_change_notify_queue is not needed anymore for samba-generated
events. Next step is to restructure the kernel-mechanisms to generate
messages.

Volker
2007-10-10 12:16:49 -05:00