Commit Graph

30 Commits

Author SHA1 Message Date
jdolecek 42b64d9f91 ntfs_readntvattr_plain():
Previous revision mistakely removed fix for DIAGNOSTIC "getblk: block size
invariant failed" panic, incorporated in rev. 1.5. The problem there
has been that depending on 'off', the code did bread() of 512 and after that
1024 bytes for same 'blkno'. Fix this differently than in rev. 1.5 -
if 'off' would bump the read over to next device block, trim the read to
end on block boundary and read rest in next loop iteration. This seems
to fix the problem, and avoids the performance hit rev. 1.5 incurred.

Fix bug in code handling holes for reads via read(2) - a variable
was incremented instead of decremented.
2001-06-25 18:33:14 +00:00
jdolecek ec6b53c217 ntfs_{read|write}vattr_plain(): remove NetBSD-specific code which seems
to be not needed anymore with UBC. This might also solve problems
people seen as 'Argument list too long', like kern/10119
2001-06-19 22:10:11 +00:00
jdolecek 44cdfc6a17 Change MALLOC()/FREE() to malloc()/free() for cases where the size
argument is a variable.
2001-05-15 22:38:40 +00:00
joda 35fd1893df set debug level via patchable variable, and fix some debug printf warnings 2001-03-29 10:51:16 +00:00
jdolecek f251889358 Add per-mount filename conversion and compare hooks, which can be used
to recode Unicode names to other representation, like encoding form
or national character/code sets. This replaces the ugly NTFS_U28() hack.
Use these hooks to encode the filenames to UTF-8.
2001-02-13 19:53:52 +00:00
jdolecek f9fd3eae06 ntfs_ntlookupfile(): if the file is not found using normal scan, do full
scan of all directory entries; the mangled file name we return to
  userland on getdents(2) may end up being unsearchable otherwise

This change is useful even through we will soon change to encode the
NTFS file names to utf-8 - we want to support recoding of filenames to
national 8bit charsets eventually.

while here, remove some unnecessary casts, change NTFS_U28() macro so that
the mangled filename doesn't contain control characters and use malloc()/free()
instead MALLOC()/FREE() for rdbuf buffer
2001-02-12 19:17:05 +00:00
fvdl 655a7bf795 Always unlock the "fnode", even if we're about to free it, to keep
lock counts consistent. DIAGNOSTIC checks will barf otherwise.

XXX ntfs_ntput should not free the node, the reclaim vop should do it
XXX why does the ntfs code do its own internal locking?
1999-12-20 22:11:57 +00:00
jdolecek 94b1798c8c struct ntnode: g/c i_uid, i_gid, i_mode - use directly appropriate
ntnode->ntmp->ntm_* values
ntfs_inactivate(): as NTFS doesn't support any filesystem changes,
	it's not needed to check whether the file handle is stale;
	the check was bogus anyway - besides the value of vp->v_usecount
	was checked with unlocked vnode, the vnode was unnecessarily
	_always_ recycled when the filesystem containing it has been
	mounted with mask (-i parameter to mount_ntfs(1))
	not specified or 0 -- unbelievable, but true
ntfs_reclaim(): don't call VOP_UNLOCK() even on FreeBSD - it's not
	done for any other their filesystem, so it should not be done even
	for NTFS
ntfs_access(): remove the commented-out check for immutable flag, it doesn't
	make sense for NTFS
other miscelaneous cosmetic cleanups
1999-10-31 19:45:26 +00:00
jdolecek 9134b1791c partly backup previous: don't use LK_RETRY when calling ntfs_vgetex() 1999-10-25 21:17:21 +00:00
jdolecek 2e860c12d3 pass the lock flags in the NetBSD version of VN_LOCK(), VGET(),
VOP__UNLOCK() macros, g/c VOP__LOCK()
add some comments
use LK_RETRY flag as appropriate
g/c the FreeBSD vnode_pager_uncache() staff, as was done in FreeBSD tree a while
	ago (actually, when they merged the first round of NetBSD patches)
use VN_LOCK() & VOP__UNLOCK() consistently throughout the code instead
	of vn_lock() and VOP_UNLOCK()
minor whitespace changes
1999-10-25 19:08:26 +00:00
jdolecek 9516650226 update debug printfs to use "ntfs_loadntnode" instead of "ntfs_loadnode"
make ntfs_ntref() real function and properly lock ip->i_interlock when
	updating ip->i_usecount
g/c ntfs_uustricmp()
make ntfs_uastr[i]cmp() static, rename arguments to be a bit more mnemonic
add couple of casts to NTFS_TOUPPER() and ntfs_uastr[i]cmp() - this
	corrects couple of cases when open()/stat() failed for
	files which apparently existed and even showed in ls output
ntfs_ntlookup(): initialize ip properly if ntnode is found in hash table,
	so that debug prints doesn't print garbage in that case
some whitespace policy
1999-10-10 14:48:37 +00:00
jdolecek cfb7bf7fca * convert ntfs_nt{get|put|rele}() to lockmgr()-style locking and
guard the setting and checking of i_usecount by simplelock; as
  situation where there would be several users of same ntnode is
  extremery rare, it's not worth the efford to change the code to
  hold the (exclusive) lock only when it's needed

* in struct fnode, g/c f_dev & f_type (former is already in ntnode,
  latter is in parent vnode), move f_devvp from struct fnode into
  struct ntnode (no reason this should be copied in each fnode)
1999-10-09 14:27:42 +00:00
jdolecek 3631d421fe make compilable with NTFS_DEBUG defined
Noted by Patrick Welche
1999-10-01 20:01:20 +00:00
jdolecek 3bc0f4abd1 convert ntfs_ntlookup() to use lockmgr()-style locking, instead of it's
home brewed variant
1999-09-30 16:56:40 +00:00
jdolecek 28d14a2c3b struct fnode cleanup:
* f_lock is only needed for FreeBSD (for their totally disgusting
	  and insane way of doing generic vnode locking)
	* g/c f_mp, it was write-only
	* some comments added
1999-09-29 15:58:28 +00:00
jdolecek 66f0e7b121 move definition of ntfs_fget() and ntfs_frele() to ntfs_subr.h and g/c
now obsolete ntfs_extern.h
1999-09-29 15:36:07 +00:00
jdolecek 3ff26c418a ntfs_ntvattrget(): move duplicated code to separate function
ntfs_findvattr(), AALPCMP --> NTFS_AALPCMP, avoid excessive
	intendation, fix debug printf when the attribute is not found
	to print only first namelen characters of name
some minor KNF and const poisoning
ntfs_ntlookupattr(): make it static, collapse duplicated code
ntfs_ntlookupfile(): avoid memory leak, explicitly set error to 0 when
	returning success
kill some bogus comments
1999-09-28 06:10:31 +00:00
jdolecek 1e99130f2e Use unixish term "hole" instead od "sparce" (which looks like it
should be "sparse" anyway).

Noted by Soren Jorvang <soren@NetBSD.org>.
1999-09-07 08:16:13 +00:00
jdolecek 1a0dc06af2 argh, forgot to add the implementation of ntfs_u28() 1999-09-05 12:30:56 +00:00
augustss 39e85679c4 Make it compile again. 1999-09-04 22:12:15 +00:00
jdolecek 2f7c750c12 change ntfs_read*attr*() and ntfs_write*attr*() to accept struct
uio parameter; if it's not null, the data are copied directly
	into/from the user buffer via uiomove()
new macro NTFS_U28() and function ntfs_u28() to convert between Unicode
	and 8bit encoding; all it does currently is getting lower 8bit
	of the Unicode char and subtituting '_' for it if the result would be 0;
	use the macro within NTFS_TOUPPER() macro and in ntfs_uastrcmp()
g/c the (ntfsmount *) parametr to ntfs_u*astr[i]cmp() functions, it's no
	longer needed
avoid excessive intendation
1999-09-04 18:56:01 +00:00
augustss abebf3e12d Make it compile with DIAGNOSTIC. 1999-08-18 16:25:52 +00:00
jdolecek b8947f73c1 s/ntfs_toupper_used/ntfs_toupper_usecount/, make it static
ntfs_toupper_unuse(): check if ntfs_toupper_usecount is negative only when
	DIAGNOSTIC
1999-08-18 13:35:44 +00:00
jdolecek 129d05b5b3 the Unicode uppercase translation table is read when first ntfs volume
is mounted and all ntfs volumes share it; the space occupied by the
table is freed upon last ntfs volumen umount. Saves 128KB for every
ntfs volume mounted.
XXX for now, read just first 256 entries - no more would be currently used
	anyway
1999-08-16 08:11:34 +00:00
ross a404c48c54 Another size_t printf kludge, sigh. XXX noted in source. 1999-08-08 00:40:06 +00:00
jdolecek cd613f7348 ntfs_{read|write}ntvattr_plain(): bread() can return maximum one block
worth of data under NetBSD -- FreeBSD bread() seems to be able to
	return more data and code counted with it
it's possible to actually mount NTFS volume now
1999-08-02 15:31:31 +00:00
jdolecek afae7d7f3b resolve conflicts 1999-07-26 14:02:30 +00:00
thorpej dbdf646ecf Fix compilation problems on the Alpha. 1999-05-18 00:22:41 +00:00
christos d9a25d1815 Fix compilation problems. 1999-05-06 15:43:17 +00:00
christos b45af1f072 Import yesterday's NTFS FreeBSD source 1999-05-06 15:36:39 +00:00