[news.software.b] INEWS's use of the link

mike@anomaly.sbs.com (Michael P. Deignan) (07/02/90)

I've run into an interesting problem with INEWS which I'm wondering if
anyone else has encountered.

Because of our filesystems' I-Node limit of 65500 inodes/filesystem, we
were thinking of dividing our news filesystem as follows:

	/dev/news	mount as	/usr/spool/news
	/dev/comp	mount as	/usr/spool/news/comp
	/dev/rec	mount as	/usr/spool/news/rec

This would effectively yield over 180,000 inodes for our filesystem, more
than enough to manage our 14 day expiration cycle on articles.

Unfortunately, INEWS uses the link() function, which will not work
successfully across filesystems.

Looking at the INEWS programs, there appeared to be an "artificial link()
simulator" for VMS systems, which, when utilizing the code for those
particular routines (ie: posting news) yields a "Cannot reread article"
error in ifuncs.c, in function broadcast(), at the code:

	if (hread(&h,fp, TRUE) == NULL)
		xerror("Cannot reread article");

Up to this point, it appears that fp has in fact returned a non-NULL
value.

I was wondering if anyone else has done this, or has a suggestion as to
how we might go about it...

MD
-- 
-- Michael P. Deignan, President       -- Small Business Systems, Inc. --
----------------------------------------- Box 17220, Esmond, RI  02917 --
-- Domain-Based: mike@anomaly.sbs.com  -- Voice:   +1 401 273-4669     --
-- UUCP: ...!uunet!rayssd!anomaly!mike -- Telebit: +1 401 455-0347     --

gary@sci34hub.UUCP (Gary Heston) (07/06/90)

In article <1925@anomaly.sbs.com> mike@anomaly.sbs.com (Michael P. Deignan) writes:
>I've run into an interesting problem with INEWS which I'm wondering if
>anyone else has encountered.

It's been seen and discussed before.... maybe we need a Frequently Ask
Questions for this group, now....

>Because of our filesystems' I-Node limit of 65500 inodes/filesystem, we
>were thinking of dividing our news filesystem as follows:
>
>	/dev/news	mount as	/usr/spool/news
>	/dev/comp	mount as	/usr/spool/news/comp
>	/dev/rec	mount as	/usr/spool/news/rec
>
>This would effectively yield over 180,000 inodes for our filesystem, more
>than enough to manage our 14 day expiration cycle on articles.

You should be able to handle a 14-day retention on a single filesystem,
around 150MB, with a maxed-out inode allocation. This many filesystems
shouldn't be necessary unless you're retaining 30 days of so of news.

You might want to consider whether or not you need to retain much news,
anyway. I expire out comp.mail.maps and junk at 2 days, rec.*, soc.*,
sci.*, talk.*, misc.*, and low interest/high volume comp groups at 
7 days. Unless you have someone who only reads news once every two
weeks, just shorten your expire. Expiring and posting will run 
faster with the smaller $SPOOLDIR...

>Unfortunately, INEWS uses the link() function, which will not work
>successfully across filesystems.
>
> [ possible workaround deleted ]
>
>I was wondering if anyone else has done this, or has a suggestion as to
>how we might go about it...

If you really want all those articles around, and have the space on
your system, replace the link() function call with a cp. You'll have
duplicate files, probably costing you 15-20% more disc space (as a
guess--I haven't researched crossposted article activity), but it'll
work.

-- 
    Gary Heston     { uunet!sci34hub!gary  }    System Mismanager
   SCI Technology, Inc.  OEM Products Department  (i.e., computers)
"The esteemed gentleman says I called him a liar. That's true, and I
regret it." Retief, a character created by Keith Laumer.

woerz%leonardo@isaak.isa.de (Dieter Woerz) (07/12/90)

In article <689@sci34hub.UUCP> gary@sci34hub.sci.com (Gary Heston) writes:
<In article <1925@anomaly.sbs.com> mike@anomaly.sbs.com (Michael P. Deignan) writes:
<<I've run into an interesting problem with INEWS which I'm wondering if
<<anyone else has encountered.
<  ...
<< ...
<<Unfortunately, INEWS uses the link() function, which will not work
<<successfully across filesystems.
<<
<< [ possible workaround deleted ]
<<
<<I was wondering if anyone else has done this, or has a suggestion as to
<<how we might go about it...
<
<<<Because of our filesystems' I-Node limit of 65500 inodes/filesystem, we
<<were thinking of dividing our news filesystem as follows:
<<
<<	/dev/news	mount as	/usr/spool/news
<<	/dev/comp	mount as	/usr/spool/news/comp
<<	/dev/rec	mount as	/usr/spool/news/rec
<<
<<This would effectively yield over 180,000 inodes for our filesystem, more
<<than enough to manage our 14 day expiration cycle on articles.
<
< ...
<If you really want all those articles around, and have the space on
<your system, replace the link() function call with a cp. You'll have
<duplicate files, probably costing you 15-20% more disc space (as a
<guess--I haven't researched crossposted article activity), but it'll
<work.

If you are doing it the way described above, you should do it more
intelligently and replace the link function with one of your one,
which checks, if the article would be on the other file system and use
Doing it right, would involve replacing the link function doing the
following (written in some sort of pseudo-code):

    if (both files on the same filesystem)
    	link()
    else
    	if (symbolic links available)
    	    symlink()
    	else
    	    copy()

But if you are doing it with symbolic links, you have to change expire
to either copy the article to a newsgroup, where there is a symbolic
link to that article and change the other "links" to the new location
of the article (either by making them hard links or leaving them as
symbolic links, but changing the pointer), until there are no more links
to the article. Or you just leave the article in the original group
(don't expire it), until there are no more links to the article.

<-- 
<    Gary Heston     { uunet!sci34hub!gary  }    System Mismanager
<   SCI Technology, Inc.  OEM Products Department  (i.e., computers)
<"The esteemed gentleman says I called him a liar. That's true, and I
<regret it." Retief, a character created by Keith Laumer.



--
Dieter Woerz        INTERNET:       woerz@isa.de
ISA GmbH            UUCP:           {pyramid,uunet!unido}!isaak!woerz
Azenbergstr. 35     BITNET/EARN:    woerz@ds0iff5
D-7000 Stuttgart-1