Hello community, here is the log from the commit of package novfs checked in at Fri Aug 10 01:55:55 CEST 2007. -------- --- arch/i386/novfs/novfs.changes 2007-07-12 18:58:22.000000000 +0200 +++ /mounts/work_src_done/STABLE/novfs/novfs.changes 2007-08-09 14:06:55.000000000 +0200 @@ -1,0 +2,10 @@ +Thu Aug 09 06:23:35 MDT 2007 - IDichkovsky@novell.com + +- [Bugzilla 291612] Unable to save MS Office file in CX Office + +------------------------------------------------------------------- +Thu Jul 19 05:35:02 MDT 2007 - ASkuratov@novell.com + +- [Bugzilla 247585] NCP Remote file locking is not working correctly + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ novfs.spec ++++++ --- /var/tmp/diff_new_pack.ru6466/_old 2007-08-10 01:53:27.000000000 +0200 +++ /var/tmp/diff_new_pack.ru6466/_new 2007-08-10 01:53:27.000000000 +0200 @@ -18,7 +18,7 @@ Group: System/Filesystems License: GPL v2 or later Version: 2.0.0 -Release: 20 +Release: 21 Source: %name-%version.tar.bz2 Source1: files Source2: preamble @@ -65,6 +65,10 @@ done %changelog +* Thu Aug 09 2007 - IDichkovsky@novell.com +- [Bugzilla 291612] Unable to save MS Office file in CX Office +* Thu Jul 19 2007 - ASkuratov@novell.com +- [Bugzilla 247585] NCP Remote file locking is not working correctly * Tue Jul 10 2007 - IDichkovsky@novell.com - [Bugzilla 204984] Cannot open up a crossover word document from a mapped drive * Mon Jul 09 2007 - sgledhill@novell.com ++++++ novfs-2.0.0.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/novfs-2.0.0/src/file.c new/novfs-2.0.0/src/file.c --- old/novfs-2.0.0/src/file.c 2007-07-12 15:51:21.000000000 +0200 +++ new/novfs-2.0.0/src/file.c 2007-08-09 12:56:06.000000000 +0200 @@ -92,6 +92,7 @@ int Novfs_Close_Stream( HANDLE ConnHandle, u_char *Handle, session_t SessionId ); int Novfs_Delete( u_char *Path, int DirectoryFlag, session_t SessionId ); int Novfs_Truncate_File( u_char *Path, int PathLen, session_t SessionId ); +int Novfs_Truncate_File_Ex( HANDLE Handle, loff_t Offset, session_t SessionId ); int Novfs_Rename_File( int DirectoryFlag, u_char *OldName, int OldLen, u_char *NewName, int NewLen, session_t SessionId ); int Novfs_Set_Attr( u_char *Path, struct iattr *Attr, session_t SessionId ); int Novfs_Get_File_Cache_Flag( u_char *Path, session_t SessionId ); @@ -2409,6 +2410,78 @@ } /*++======================================================================*/ +int Novfs_Truncate_File_Ex( HANDLE Handle, loff_t Offset, session_t SessionId ) +/* + * + * Arguments: + * + * Returns: + * + * Abstract: + * + * Notes: + * + * Environment: + * + *========================================================================*/ +{ + WRITE_FILE_REQUEST cmd; + PWRITE_FILE_REPLY reply=NULL; + unsigned long replylen=0; + int retCode=0, cmdlen; + + DbgPrint("Novfs_Truncate_File_Ex Handle=0x%p Offset=%lld\n", Handle, Offset); + + cmdlen = (int)(&((PWRITE_FILE_REQUEST)0)->data); + + cmd.Command.CommandType = VFS_COMMAND_WRITE_FILE; + cmd.Command.SequenceNumber = 0; + cmd.Command.SessionId = SessionId; + cmd.handle = Handle; + cmd.len = 0; + cmd.offset = Offset; + + retCode = Queue_Daemon_Command(&cmd, cmdlen, NULL, 0, (void *)&reply, &replylen, INTERRUPTIBLE); + + DbgPrint("Novfs_Truncate_File_Ex retCode=0x%x reply=0x%p\n", retCode, reply); + + if ( !retCode ) + { + switch (reply->Reply.ErrorCode) + { + case 0: + retCode = 0; + break; + + case NWE_INSUFFICIENT_SPACE: + retCode = -ENOSPC; + break; + + case NWE_ACCESS_DENIED: + retCode = -EACCES; + break; + + case NWE_FILE_IO_LOCKED: + retCode = -EBUSY; + break; + + default: + retCode = -EIO; + break; + } + } + + if (reply) + { + Novfs_Free(reply); + } + + DbgPrint("Novfs_Truncate_File_Ex retCode=%d\n", retCode); + + return( retCode ); +} + +/*++======================================================================*/ int Novfs_Rename_File( int DirectoryFlag, u_char *OldName, int OldLen, u_char *NewName, int NewLen, session_t SessionId ) /* * @@ -2534,6 +2607,10 @@ retCode = -EINVAL; break; + case NWE_FILE_IO_LOCKED: + retCode = -EBUSY; + break; + default: retCode = -EIO; break; @@ -2653,6 +2730,15 @@ cmd->Command.SessionId = SessionId; cmd->handle = Handle; + if (F_RDLCK == fl_type) + { + fl_type = 1; // LockRegionExclusive + } + else if (F_WRLCK == fl_type) + { + fl_type = 0; // LockRegionShared + } + cmd->fl_type = fl_type; cmd->fl_start = fl_start; cmd->fl_len = fl_len; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/novfs-2.0.0/src/inode.c new/novfs-2.0.0/src/inode.c --- old/novfs-2.0.0/src/inode.c 2007-07-12 15:51:21.000000000 +0200 +++ new/novfs-2.0.0/src/inode.c 2007-08-09 12:56:06.000000000 +0200 @@ -102,6 +102,7 @@ extern int Novfs_Write_Pages( HANDLE Handle, PDATA_LIST DList, int DList_Cnt, size_t Bytes, loff_t Offset, session_t SessionId); extern int Novfs_Delete( unsigned char *Path, int DirectoryFlag, session_t SessionId ); extern int Novfs_Truncate_File( unsigned char *Path, int PathLen, session_t SessionId ); +extern int Novfs_Truncate_File_Ex( HANDLE Handle, loff_t Offset, session_t SessionId ); extern int Novfs_Rename_File( int DirectoryFlag, unsigned char *OldName, int OldLen, unsigned char *NewName, int NewLen, session_t SessionId ); extern int Novfs_Set_Attr( unsigned char *Path, struct iattr *Attr, session_t SessionId ); extern int Novfs_Get_File_Cache_Flag( u_char *Path, session_t SessionId ); @@ -1343,6 +1344,7 @@ { FilePrivate2 *file_private = NULL; + DbgPrint("Novfs_dir_lseek: offset %lld %d Name %.*s\n", offset, origin, file->f_dentry->d_name.len, file->f_dentry->d_name.name); //printk("<1> seekdir file = %.*s offset = %i\n", file->f_dentry->d_name.len, file->f_dentry->d_name.name, (int)offset); if( 0 != offset ) @@ -1388,6 +1390,7 @@ } return(rlen); */ + DbgPrint("Novfs_dir_read: %lld %d Name %.*s\n", *off, len, file->f_dentry->d_name.len, file->f_dentry->d_name.name); return(generic_read_dir(file, buf, len, off)); } @@ -1568,9 +1571,11 @@ int lComm; file_private = (FilePrivate2*)file->private_data; + DbgPrint("Novfs_dir_readdir: Name %.*s\n", file->f_dentry->d_name.len, file->f_dentry->d_name.name); //printk("<1> file = %.*s\n", file->f_dentry->d_name.len, file->f_dentry->d_name.name); +#ifdef CROSSOVER_HACK // Hack for crossover - begin down( &TimeDir_Lock ); if( ( file->f_dentry->d_name.len == 7 ) && @@ -1607,6 +1612,7 @@ up( &TimeDir_Lock ); // Hack for crossover - end +#endif if( file->f_pos == 0) { @@ -1714,6 +1720,7 @@ * *========================================================================*/ { + DbgPrint("Novfs_dir_fsync: Name %.*s\n", file->f_dentry->d_name.len, file->f_dentry->d_name.name); return(simple_sync_file(file, dentry, datasync)); } @@ -2072,7 +2079,14 @@ { inode = file->f_dentry->d_inode; DbgPrint("Novfs_f_flush: %.*s f_flags=0x%x f_mode=0%o i_mode=0%o\n", file->f_dentry->d_name.len, file->f_dentry->d_name.name, file->f_flags, file->f_mode, inode->i_mode); - filemap_fdatawrite( file->f_dentry->d_inode->i_mapping ); + if (file->f_dentry && + file->f_dentry->d_inode && + file->f_dentry->d_inode->i_mapping && + file->f_dentry->d_inode->i_mapping->a_ops && + file->f_dentry->d_inode->i_mapping->a_ops->writepage) + { + filemap_fdatawrite( file->f_dentry->d_inode->i_mapping ); + } } } return(0); @@ -2111,8 +2125,14 @@ session = Scope_Get_SessionId(id->Scope); } - //filemap_write_and_wait(file->f_dentry->d_inode->i_mapping); - //invalidate_remote_inode(file->f_dentry->d_inode); + if (file->f_dentry && + file->f_dentry->d_inode && + file->f_dentry->d_inode->i_mapping && + file->f_dentry->d_inode->i_mapping->a_ops && + file->f_dentry->d_inode->i_mapping->a_ops->writepage) + { + invalidate_remote_inode(file->f_dentry->d_inode); + } retCode = Novfs_Close_File(file->private_data, session); //id->FileHandle = 0; @@ -2205,6 +2225,10 @@ { /* Get len from "start" and "end" */ len = lock->fl_end - lock->fl_start + 1; + if ((0 == lock->fl_start) && (OFFSET_MAX == lock->fl_end)) + { + len = 0; + } if ( file->f_dentry && (inode = file->f_dentry->d_inode) && @@ -3182,7 +3206,14 @@ DbgPrint("update_inode: calling invalidate_remote_inode sz %d %d\n", Inode->i_size, Info->size); DbgPrint("update_inode: calling invalidate_remote_inode sec %d %d\n", Inode->i_mtime.tv_sec, Info->mtime.tv_sec); DbgPrint("update_inode: calling invalidate_remote_inode ns %d %d\n", Inode->i_mtime.tv_nsec, Info->mtime.tv_nsec); - invalidate_remote_inode( Inode ); + + if (Inode && + Inode->i_mapping && + Inode->i_mapping->a_ops && + Inode->i_mapping->a_ops->writepage) + { + invalidate_remote_inode( Inode ); + } } Inode->i_mode = Info->mode; @@ -3738,6 +3769,7 @@ unsigned int ia_valid = attr->ia_valid; session_t session; int retVal = 0; + struct iattr mattr; if ( IS_ROOT(dentry) || /* Root */ IS_ROOT(dentry->d_parent) || /* User */ @@ -3777,7 +3809,7 @@ { ctime_r(&attr->ia_ctime.tv_sec, ctime_buf); } - /* Removed for Bug 132374. jlt + /* Removed for Bug 132374. jlt */ DbgPrint("Novfs_i_setattr: %s\n" \ " ia_valid: 0x%x\n" \ " ia_mode: 0%o\n" \ @@ -3786,8 +3818,7 @@ " ia_size: %lld\n" \ " ia_atime: %s\n" \ " ia_mtime: %s\n" \ - " ia_ctime: %s\n" \ - " ia_attr_flags: 0x%x\n", + " ia_ctime: %s\n", path, attr->ia_valid, attr->ia_mode, @@ -3796,11 +3827,25 @@ attr->ia_size, atime_buf, mtime_buf, - ctime_buf, - attr->ia_attr_flags); - */ + ctime_buf); - if ( !(retVal = Novfs_Set_Attr(path, attr, session) ) ) + + if ( (attr->ia_valid & ATTR_FILE) && (attr->ia_valid & ATTR_SIZE) ) + { + memcpy(&mattr, attr, sizeof(mattr)); + mattr.ia_valid &= ~(ATTR_FILE | ATTR_SIZE); + attr = &mattr; + ia_valid = attr->ia_valid; + + retVal = Novfs_Truncate_File_Ex(attr->ia_file->private_data, attr->ia_size, session); + if ( !retVal ) + { + inode->i_size = attr->ia_size; + ((PINODE_DATA)inode->FSPRIVATE)->Flags |= UPDATE_INODE; + } + } + + if ( ia_valid && !(retVal = Novfs_Set_Attr(path, attr, session) ) ) { ((PINODE_DATA)inode->FSPRIVATE)->Flags |= UPDATE_INODE; @@ -3818,6 +3863,7 @@ } Novfs_Free(buf); } + DbgPrint("Novfs_i_setattr: return 0x%x\n", retVal); return(retVal); } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/novfs-2.0.0/src/Makefile new/novfs-2.0.0/src/Makefile --- old/novfs-2.0.0/src/Makefile 2007-07-12 15:51:22.000000000 +0200 +++ new/novfs-2.0.0/src/Makefile 2007-08-09 12:56:06.000000000 +0200 @@ -33,7 +33,7 @@ NOVFS_VFS_MAJOR = 2 NOVFS_VFS_MINOR = 0 NOVFS_VFS_SUB = 0 -NOVFS_VFS_RELEASE = 431 +NOVFS_VFS_RELEASE = 434 # Remove # from the following line for debug version EXTRA_CFLAGS += -finstrument-functions ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de