let res = Directfifowatcher.mkentry fqp abspath realperm slice_name in
match res with
| Success ->
- Directfifowatcher.openentry fqp (abspath,slice_name)
+ Directfifowatcher.openentry root_dir fqp (abspath,slice_name)
| _ -> ()
(** A new directory was created at the backend, make a corresponding directory
end;
with Unix.Unix_error(_,_,_) ->
Unix.mkdir fqp perm;
- Directfifowatcher.add_dir_watch fqp
-
-
-
-
+ Directfifowatcher.add_dir_watch fqp
(** Functions corresponding to file deletion/directory removal *)
Unix.unlink fqp_in;
Unix.unlink fqp_out
with _ ->
- fprintf logfd "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ());flush logfd
+ logprint "Hm. %s disappeared. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
method rmdir rp =
match rp with Relpath(rel) ->
try
Unix.rmdir fqp
with _ ->
- fprintf logfd "Hm. %s disappeared or not empty. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ());flush logfd
+ logprint "Hm. %s disappeared or not empty. Looks like slice %s shot itself in the foot\n" fqp (this#get_slice_name ())
initializer
- Directfifowatcher.add_dir_watch root_dir
+ (
+ try
+ let s = Unix.stat root_dir in
+ if (s.st_kind<>S_DIR) then
+ begin
+ Unix.unlink root_dir;
+ Unix.mkdir root_dir 0o700
+ end
+ else if (s.st_perm <> 0o700) then
+ begin
+ Unix.rmdir root_dir;
+ Unix.mkdir root_dir 0o700
+ end;
+ with Unix.Unix_error(_,_,_) ->
+ begin
+ try
+ Unix.mkdir root_dir 0o700;
+ with _ -> ();
+ end);
+ Directfifowatcher.add_dir_watch root_dir
end