From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastian Arjun Shajit Subject: Re: PROBLEM: Attempting to create subdirectory returns error after removing parent directory with child entries using rmdir() Date: Thu, 23 Jun 2016 16:27:39 +0300 Message-ID: <576BE3CB.5080209@tuxera.com> References: <576A9356.2010701@tuxera.com> <576A9423.6090505@tuxera.com> <6d5f3758e7b946a9a6d9e629cac722a5@nebula-exfe-02.nebula.local> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Cc: "linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" To: Steve French Return-path: In-Reply-To: Sender: linux-cifs-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Hi Steve, On 22.06.2016 23:23, Shajit Bastian wrote: > Hi Steve, > > On 22.06.2016 18:48, Steve French wrote: >> Does this patch which is in recent kernels change the behavior: >> >> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/cifs?id=897fba1172d637d344f009d700f7eb8a1fa262f1 > I think this patch might solve the problem. I will test and update asap. I applied the patch and tested again. This solves the problem. Thanks you. Br, Bastian > > Br, > Bastian >> On Wed, Jun 22, 2016 at 8:35 AM, Bastian Arjun Shajit >> wrote: >>> Hi, >>> >>> We encountered the following error or unexpected behaviour when >>> following the steps given below: >>> >>> 1. Mount the remote share exported by either windows or samba using the >>> following command: >>> sudo mount -t cifs -o >>> port=445,vers=2.1,username=,password=password,noperm,actimeo=0 >>> ///SH1 /mnt/test && cd /mnt/test >>> >>> 2. Run the attached program on the mounted share. You should see the >>> following output: >>> >>> **bastian@gutbark-UX32VD:/mnt/test$ /KVMstorage/cifs_dir_bug >>> ** [4428] mkdir ./parentdir 0777 >>> ** [4428] mkdir ./parentdir/sub.0 0777 >>> ** [4428] chdir ./parentdir/sub.0 >>> ** [4428] rmdir /mnt/test/parentdir >>> !! [4428] stat() /mnt/test/parentdir Success >>> ** [4428] mkdir /mnt/test/parentdir/sub.1 >>> !! [4428] mkdir /mnt/test/parentdir/sub.1 failed(No such file or directory) >>> >>> You can see from the above logs, stat of parentdir is successful but >>> creating a new child directory under the parent fails. >>> >>> The attached program does the following: >>> a. Create a parent directory >>> b. Create a sub-directory under the parent. >>> c. Change dir to sub-directory >>> d. Now delete the parent directory using absolute path from the cifs >>> client using "rmdir". >>> >>> The POSIX behaviour for rmdir() is that if there are entries other than >>> "." and ".." it must return ENOTEMPTY error. But as per SMB2 protocol >>> specification, we delete a directory by: >>> a. Open directory with "Delete on Close" Flag set in the "CreateOptions" >>> field of the SMB2 CREATE request. >>> b. Close the open handle returned in the response for the previous request. >>> >>> As per SMB2 specification, the SMB2 close will always return NT status >>> STATUS_SUCCESS for removing the directory even if the directory has >>> child entries, but the server does not delete the directory itself. >>> >>> 4. Manually running "tree" on the mounted share shows the following: >>> bastian@gutbark-UX32VD:/mnt/test$ tree >>> . >>> |__parentdir >>> 1 directory, 0 files >>> >>> We clearly see above that the parent directory does not show any child >>> directories. >>> >>> 5.Now we unmount and mount the remote share again >>> bastian@gutbark-UX32VD:/mnt/test$ cd / && sudo umount /mnt/test >>> bastian@gutbark-UX32VD:/KVMstorage/$ sudo mount -t cifs -o >>> port=445,vers=2.1,username=,password=password,noperm,actimeo=0 >>> ///SH1 /mnt/test && cd /mnt/test >>> bastian@gutbark-UX32VD:/mnt/test$ tree >>> . >>> |__parentdir >>> |__ sub.0 >>> 2 directories, 0 files// >>> >>> As you can see, remounting the remote share now displays a subdirectory >>> which was not displayed in the earlier mount cycle. >>> >>> We used the following test setup for reproducing the above said issue: >>> 1. Cifs client: Version = 2.06, Linux versions: Ubuntu, 3.19.8-ckt5 & >>> 3.16.0-49-generic >>> 2. Server: Windows 8.1 pro, Windows 7, Samba 4.1.6-Ubuntu. >>> 3. Reproducible only on SMB2 protocol version. >>> >>> The issue was reproducible always on WIndows SMB server whereas on Samba >>> server we were able to reproduce 1/2 times. >>> >>> We ran the same tests on CIFS client version: 2.08, Linux versions 4.4 >>> and 4.5 and we were unable to reproduce the issue. >>> >>> Br, >>> Bastian >>> >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org > More majordomo info at http://vger.kernel.org/majordomo-info.html