----- Original Message -----
> From: "shuang qiu" <[email protected]>
> To: [email protected]
> Sent: Thursday, 23 May, 2013 9:09:07 AM
> Subject: [LTP] [PATCH] dup07:Close the file before unlink it.
> 
> From: Shuang Qiu <[email protected]>
> 
> When unlink() a file in nfs environment,it will rename the file to a
> .nfs<xxxxx> file if any process still has that file open.And this file
> could not be deleted until it is closed.So we always get the following
> warning which makes testcase "dup07" failed:
> 0  TWARN  :  tst_rmdir: rmobj(/mnt/nfsv3/ltp-ZtzSE27611/dupKuEr3H)
> failed:
> unlink(/mnt/nfsv3/ltp-ZtzSE27611/dupKuEr3H/.nfs000000000110cb3800000066)
> failed; errno=16: Device or resource busy
> 
> Close the created/dup file before unlink() it to fix this issue.
> 
> Signed-off-by: Shuang Qiu <[email protected]>

Hi,

this is introducing some warnings:
dup07.c:53: warning: ‘duprdo’ may be used uninitialized in this function
dup07.c:53: warning: ‘dupwro’ may be used uninitialized in this function
dup07.c:53: warning: ‘duprdwr’ may be used uninitialized in this function

Rather than initializing these to -1, I'd suggest to move those close() calls
to else branches:
@@ -77,7 +77,9 @@ int main(int ac, char **av)
                                        tst_resm(TPASS,
                                                 "Passed in read mode.");
                                }
+                               close(duprdo);
                        }
+                       close(rdoret);
                }

Regards,
Jan 

> ---
>  testcases/kernel/syscalls/dup/dup07.c |   12 ++++++++++++
>  1 files changed, 12 insertions(+), 0 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/dup/dup07.c
> b/testcases/kernel/syscalls/dup/dup07.c
> index 03b0ba4..19cd751 100644
> --- a/testcases/kernel/syscalls/dup/dup07.c
> +++ b/testcases/kernel/syscalls/dup/dup07.c
> @@ -80,6 +80,10 @@ int main(int ac, char **av)
>                       }
>               }
>  
> +             if (duprdo != -1)
> +                     close(duprdo);
> +             if (rdoret != -1)
> +                     close(rdoret);
>               unlink(testfile);
>               
>               if ((wroret = creat(testfile, 0222)) == -1) {
> @@ -100,6 +104,10 @@ int main(int ac, char **av)
>                       }
>               }
>  
> +             if (dupwro != -1)
> +                     close(dupwro);
> +             if (wroret != -1)
> +                     close(wroret);
>               unlink(testfile);
>  
>               if ((rdwret = creat(testfile, 0666)) == -1) {
> @@ -120,6 +128,10 @@ int main(int ac, char **av)
>                       }
>               }
>               
> +             if (duprdwr != -1)
> +                     close(duprdwr);
> +             if (rdwret != -1)
> +                     close(rdwret);
>               unlink(testfile);
>       }
>  
> --
> 1.7.7
> 
> 
> ------------------------------------------------------------------------------
> Try New Relic Now & We'll Send You this Cool Shirt
> New Relic is the only SaaS-based application performance monitoring service
> that delivers powerful full stack analytics. Optimize and monitor your
> browser, app, & servers with just a few lines of code. Try New Relic
> and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
> _______________________________________________
> Ltp-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ltp-list
> 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to